package cn.lg.soar.system.api.utils;

import cn.lg.soar.common.algorithm.SM2Decoder;
import cn.lg.soar.common.algorithm.SM2Encoder;
import cn.lg.soar.core.util.SoarSubscriber;
import cn.lg.soar.system.api.service.ISm2Api;

import java.security.NoSuchAlgorithmException;

/**
 * SM2工具
 * @author luguoxiang
 * @date 2025-07-15
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public class Sm2Utils {

    private static ISm2Api api;
    static {
        SoarSubscriber.subscribeInit(applicationContext -> {
            api = applicationContext.getBean(ISm2Api.class);
        });
    }


    /**
     * 获取公钥
     * @return
     * @throws NoSuchAlgorithmException
     */
    public static byte[] getPublicKey(String bizType) {
        return api.getPublicKey(bizType);
    }

    /**
     * 获取私钥
     * @return
     */
    public static byte[] getPrivateKey(String bizType) {
        return api.getPrivateKey(bizType);
    }

    /**
     * 获取公钥hex格式
     * @param bizType
     * @return
     */
    public static String getPublicKeyHex(String bizType) {
        return api.getPublicKeyHex(bizType);
    }

    /**
     * 获取公钥密码器
     * @param bizType
     * @return
     */
    public static SM2Encoder getSM2Encoder(String bizType) {
        return api.getSM2Encoder(bizType);
    }

    /**
     * 获取私钥密码器
     * @param bizType
     * @return
     */
    public static SM2Decoder getSM2Decoder(String bizType) {
        return api.getSM2Decoder(bizType);
    }

}
